home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / support / error.c < prev    next >
Encoding:
C/C++ Source or Header  |  1985-01-23  |  1.7 KB  |  97 lines

  1. # include    <stdio.h>
  2. # include    <ingres.h>
  3. # include    <aux.h>
  4. # include    <sccs.h>
  5.  
  6. SCCSID(@(#)error.c    8.1    12/31/84)
  7.  
  8. # define    ERRDELIM    '~'
  9.  
  10. /*
  11. **  PROCESS ERROR MESSAGE (Standalone override)
  12. **
  13. **    This routine replaces the "error" routine for use in
  14. **    standalone routines such as creatdb and printr.  Its usage
  15. **    is identical to that of normal "error".
  16. **
  17. **    This routine is assumed to be called by process five; hence,
  18. **    all error messages it produces have a 5000 offset.
  19. **
  20. */
  21.  
  22. error(number, argvect)
  23. int    number;
  24. char    *argvect;
  25. {
  26.     FILE        *iop;
  27.     char        **pv;
  28.     int        i;
  29.     register char    *p;
  30.     register int    err;
  31.     char        buf[10];
  32.     register char    c;
  33.     char        *errfilen();
  34.  
  35.     pv = &argvect;
  36.     err = number;
  37.     if ((iop = fopen(errfilen(5), "r")) == NULL)
  38.         syserr("error: open");
  39.  
  40.     /* read in the code and check for correct */
  41.     for (;;)
  42.     {
  43.         p = buf;
  44.         while ((c = getc(iop)) != '\t')
  45.         {
  46.             if (c <= 0)
  47.             {
  48.                 /* no code exists, print the first parm */
  49.                 printf("%d: %s\n\n", err, pv[0]);
  50.                 fclose(iop);
  51.                 return (err);
  52.             }
  53.             *p++ = c;
  54.         }
  55.         *p = 0;
  56.         i = atoi(buf);
  57.         if (i != err)
  58.         {
  59.             while ((c = getc(iop)) != ERRDELIM)
  60.                 if (c <= 0)
  61.                     syserr("proc_error: format err %d", err);
  62.             getc(iop);    /* throw out the newline */
  63.             continue;
  64.         }
  65.  
  66.         /* got the correct line, print it doing parameter substitution */
  67.         printf("%d: ", err);
  68.         c = '\n';
  69.         for (;;)
  70.         {
  71.             c = getc(iop);
  72.             if (c == EOF || c == ERRDELIM)
  73.             {
  74.                 printf("\n");
  75.                 fclose(iop);
  76.                 return (err);
  77.             }
  78.             if (c == '%')
  79.             {
  80.                 c = getc(iop);
  81.                 for (p = pv[c - '0']; c = *p; p++)
  82.                 {
  83.                     putchar(c);
  84.                 }
  85.                 continue;
  86.             }
  87.             putchar(c);
  88.         }
  89.     }
  90. }
  91.  
  92. nferror(number, arg1, arg2, arg3, arg4, arg5, arg6)
  93. int    number;
  94. {
  95.     error(number, arg1, arg2, arg3, arg4, arg5, arg6);
  96. }
  97.